Skip to content

fix monitoring bugs and enhance feature completeness#178

Closed
Polliog wants to merge 23 commits intomainfrom
feature/152-feature-service-health-monitoring-and-status-pages
Closed

fix monitoring bugs and enhance feature completeness#178
Polliog wants to merge 23 commits intomainfrom
feature/152-feature-service-health-monitoring-and-status-pages

Conversation

@Polliog
Copy link
Collaborator

@Polliog Polliog commented Mar 23, 2026

Summary

  • Fix slug collision in public status page — now filters by status_page_public flag
  • Wrap createMonitor in a DB transaction to prevent orphaned monitors
  • Wire HttpConfig (method, expectedStatus, headers, bodyAssertion) through DB → API → checker (was dead code)
  • Add per-monitor severity instead of hardcoded 'high' for incidents
  • Add status_page_public flag to projects with API toggle endpoint
  • Fix $derived.by() reactivity bug on monitor detail page
  • Add refresh button, copy heartbeat URL button, client-side form validation
  • Type mapMonitor properly (was any), optimize org membership check to single query
  • Eliminate redundant DB read in processCheckResult
  • Add monitoring + incident_alerts table cleanup to test setup
  • Validate target format on monitor update (not just create)
  • Fix uptime bar height formula and status page label

Test plan

  • Create HTTP monitor with custom expectedStatus and method via httpConfig
  • Create TCP and heartbeat monitors, verify check execution
  • Verify incident created with correct per-monitor severity
  • Enable statusPagePublic on a project and verify public status page loads
  • Verify private projects return 404 on status page
  • Edit a monitor target to invalid format, verify server rejects it
  • Verify detail page refresh button and heartbeat URL copy work
  • Run existing backend tests to verify no regressions

Polliog and others added 23 commits March 20, 2026 21:33
…ing-and-enrichment-pipelines

Add log pipelines feature with CRUD, API, and frontend support
- HTTP/TCP/heartbeat monitor types with configurable intervals
- BullMQ-free polling: setInterval(30s) in worker.ts
- TimescaleDB hypertable for monitor_results + continuous aggregate for uptime
- State machine: consecutive failure/success tracking, incident auto-open/resolve
- Atomic incident creation guard (WHERE incident_id IS NULL) to prevent duplicates
- Project slugs: auto-generated on creation, unique per org
- Public status page at /status/[projectSlug] (unauthenticated)
- Heartbeat endpoint with both API key and session auth
- Security: org membership check on heartbeat session path
- ReDoS mitigation: body/pattern length limits in regex assertion
- Monitor IDs omitted from public API to prevent UUID enumeration
- fix slug collision in public status page (filter by status_page_public)
- wrap createMonitor in transaction (monitor + status inserts)
- wire HttpConfig through DB/API/checker (was dead code)
- add per-monitor severity (was hardcoded to high)
- add status_page_public to projects with toggle endpoint
- fix $derived.by in detail page, add refresh + copy buttons
- fix default failureThreshold (3 -> 2), add client-side validation
- type mapMonitor properly, optimize org membership check
- eliminate redundant DB read in processCheckResult
- add monitoring table cleanup to test setup
- add target validation on monitor update
@Polliog Polliog linked an issue Mar 23, 2026 that may be closed by this pull request
10 tasks
@Polliog Polliog closed this Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Service health monitoring and status pages

1 participant